热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

rm:cannotremove`/usr/local/tmp/‘:Directorynotempty

###问题删除目录时遇到错误提示:rm:cannotremoveusrlocaltmp’:Directorynotempty即使用rm-rf,还是会出现

###问题
删除目录时遇到错误提示:

rm: cannot remove `/usr/local/tmp/’: Directory not empty

即使用rm -rf ,还是会出现相同提示。

###原因
要删除的目录下有文件正在被使用。

###验证

####情况1:
创建tmp目录,并在其下创建文件test.txt

$ mkdir tmp
$ echo “123” > tmp/test.txt

删除目录,非常顺利

$ rm -rf tmp/

####情况2:
接着看,如果有文件被占用的情况。

写一段占用文件的代码如下。

#include
#include
#include int main()
{int i = 0;char buffer[10] = {0};while(1){FILE *fp = fopen("tmp/test.txt", "w");if (fp == NULL){printf("open failed.\n");return -1;}memset(buffer,0,10);sprintf(buffer,"%d\n", i);fputs(buffer, fp);fflush(fp);fclose(fp);sleep(0.5);++i;}return 0;
}

编译,执行

$ gcc test.c -o test
$ ./test &
[1] 16293

该程序打开文件,写入内容,关闭文件,一直循环,保持占用文件。

尝试删除目录,此时得到错误提示

$ rm -rf tmp/
rm: cannot remove `tmp': Directory not empty

由此证明,当目录下有文件正在被使用时,如果要删除目录,会得到错误提示的问题。


推荐阅读
author-avatar
谢绝沟通
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有